/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.bc;

import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.cip.esymons.colegiatura.be.DetalleSancion;
import org.cip.esymons.general.be.ConsejoDepartamental;

/**
 *
 * @author ADMINISTRADOR
 */
@Stateless
public class DetalleSancionFacade implements DetalleSancionFacadeLocal {
    @PersistenceContext
    private EntityManager em;

    public void create(DetalleSancion detalleSancion) {
        em.persist(detalleSancion);
    }

    public void edit(DetalleSancion detalleSancion) {
        em.merge(detalleSancion);
    }

    public void remove(DetalleSancion detalleSancion) {
        DetalleSancion aux = em.merge(detalleSancion);
        em.remove(aux);
    }

    public DetalleSancion find(Object id) {
        return em.find(DetalleSancion.class, id);
    }

    public List<DetalleSancion> findAll() {
        ConsejoDepartamental cons = (ConsejoDepartamental) em.createQuery("select cd from ConsejoDepartamental cd where cd.cdeEstado=1 and cd.cdeActivo=true").getSingleResult();
        List<DetalleSancion> lista = em.createQuery("select object(o) from DetalleSancion as o").getResultList();
        for (int i=0; i<lista.size(); i++) {
            lista.get(i).setConsejo(cons);
        }
        return lista;
    }

    public List<DetalleSancion> listaSanciones(Long codigo) {
        ConsejoDepartamental cons = (ConsejoDepartamental) em.createQuery("select cd from ConsejoDepartamental cd where cd.cdeEstado=1 and cd.cdeActivo=true").getSingleResult();
        List<DetalleSancion> listaSanCol = em.createQuery("select object(o) from DetalleSancion as o where o.colegiado.solCodigo=?1").setParameter(1, codigo).getResultList();
        for (int i=0; i<listaSanCol.size(); i++) {
            listaSanCol.get(i).setConsejo(cons);
        }
        return listaSanCol;
    }

    public DetalleSancion buscaSancion(Long codigo, Long sancodigo) {
        try{
        return (DetalleSancion) em.createQuery("select object(o) from DetalleSancion as o where o.colegiado.solCodigo=?1 and o.sanCodigo.sanCodigo=?2").setParameter(1, codigo).setParameter(2, sancodigo).getSingleResult();
        }catch(Exception ex){
            return null;
        }

    }

    public List<DetalleSancion> listaDetalleSancionOrdenCIP(Date fecha1,Date fecha2){

        return em.createQuery("select d from DetalleSancion as d where d.dsafechaRegistro between ?1 and ?2 order by d.colegiado.colnumeroCip").setParameter(1, fecha1).setParameter(2, fecha2).getResultList();
    }

    public List<DetalleSancion> listaDetalleSancionOrdenApellidos(Date fecha1,Date fecha2){

        return em.createQuery("select d from DetalleSancion as d where d.dsafechaRegistro between ?1 and ?2 order by d.colegiado.personaNatural.perapellidoPaterno").setParameter(1, fecha1).setParameter(2, fecha2).getResultList();
    }

    public List<DetalleSancion> listaDetalleSancionOrdenFecha(Date fecha1,Date fecha2){

        return em.createQuery("select d from DetalleSancion as d where d.dsafechaRegistro between ?1 and ?2 order by d.dsafechaRegistro").setParameter(1, fecha1).setParameter(2, fecha2).getResultList();
    }

    public List<DetalleSancion> listaDetalleSancionOrdenSancion(Date fecha1,Date fecha2){

        return em.createQuery("select d from DetalleSancion as d where d.dsafechaRegistro between ?1 and ?2 order by d.sanCodigo.sanNombre").setParameter(1, fecha1).setParameter(2, fecha2).getResultList();
    }


}
